Skip to main content

Представления (Views)

Определение и принципы

Прочтите Определения и принципы Представления (Views)

Правила

  • Представления СЛЕДУЕТ создавать внутри модулей, в этом случае они будут автоматически доступны для использования в веб-контроллерах.

Шаблонизаторы

Darklyy поддерживает несколько шаблонизаторов:

Структура папок

Для общих представлений

 - resources       
- views
- home.blade.php
- profile.html.twig
- ...

Для представлений модулей

 - usr
- modules
- {module-name}
- UI
- WEB
- Views
- home.blade.php
- profile.html.twig
- ...

Примеры кода

Приветственная страница

<!DOCTYPE html>
<html>
<head>
<title>Добро пожаловать</title>
</head>
<body>
<div class="container">
<div class="content">
<div class="title">Добро пожаловать</div>
</div>
</div>
</body>
</html>

Вызов представления из контроллера

Blade

class Controller extends WebController
{
public function sayWelcome()
{
return view('welcome');
}
}

Twig

class Controller extends WebController
{
public function sayWelcome()
{
display('welcome');
}
}

Пространство имен

По умолчанию все представления имеют пространство имен как camelCase имени модуля.

Например, к представлению с именем welcome внутри модуля Home можно получить доступ следующим образом: view(home::welcome)

Если вы попытаетесь получить к нему доступ без пространства имен view('welcome'), он не найдет ваше представление.

Примечание
  • Файлы представлений в папке Resource являются исключением из этого правила и будут иметь пространство имен без имени модуля, например. view('home')
  • Также исключение действует если используются разные темы

Поддержка разных тем

Darklyy поддерживает реализацию разных тем в одном приложении. Для активации данной функции необходимо в файле конфигурации theme.config.php установить тему по умолчанию. Либо вызвать метод Theme::set('theme-name');

Внимание

Внимание при использовании темы меняется структура расположение фалов представлений. В путь добавляется папка с именем темы.

Структура папок

Для общих представлений

 - usr
- themes
- {theme-name}
- views
- home.blade.php
- profile.html.twig
- ...

Для представлений модулей

 - usr
- modules
- {module-name}
- UI
- WEB
- Views
- {theme-name}
- home.blade.php
- profile.html.twig
- ...

Методы

// Установить тему
Theme::set('theme-name');

// Получить текущую тему
Theme::active();

// Отключить использование тем. Таким образом, ни одна тема не будет активной.
Theme::clear();

// Получить путь к теме
Theme::path($path = 'views');
// Результат:
// /usr/themes/active-theme/views

Theme::path($path = 'views', $themeName = 'admin');
// Результат:
// /usr/themes/admin/views

Theme::getViewPaths();
// Результат:
// [
// '/usr/themes/admin/views',
// '/resources/views'
// ]

Middleware для разных тем

Примеры использования:

// Пример 1: установить тему для определенного маршрута
Route::get('/dashboard', 'DashboardController@index')
->middleware('theme:dashboard-theme');


// Пример 1: установить тему для группы маршрутов
Route::group(['middleware'=>'theme:admin-theme'], function() {
// "admin-theme" будет применено для маршрутов указанных в этом кейсе
});